package com.itheima.zixi3.StreamLiu;

import com.itheima.zixi3.ZuoYe2.Stu;

import java.util.*;
import java.util.stream.Stream;

public class StreamLiu_02 {
    public static void main(String[] args) {
        List<Stu> list = List.of(
                new Stu("张三", 31, 181.0),
                new Stu("李四", 40, 170.0),
                new Stu("王五", 20, 160.0),
                new Stu("赵六", 21,188.5),
                new Stu("孙七", 22, 180.0)
                , new Stu("张三", 23, 181.0)
        );
        List<Double> D = new ArrayList<>();
        Collections.addAll(D, 77.0,99.9,93.4, 88.3, 99.0);
        //1.找出成绩大于等于60的数据，并升序后输出。
        D.stream().filter(d -> d >= 90).sorted().forEach(System.out::println);
        System.out.println("-------------");
        //2.年龄大于等于20且年龄小于等于30的学生按照降序排序。
        list.stream().filter(s ->s.getAge()>=20&&s.getAge()<=30).sorted((o1,o2) -> o2.getAge()-o1.getAge()).forEach(System.out::println);
        System.out.println("-------------");
        //3.取出身高最大的三个学生后输出。
        list.stream().sorted((o1, o2) -> Double.compare(o2.getHeight(), o1.getHeight())).limit(3).forEach(System.out::println);
        System.out.println("-------------");
        //4.取出身高最矮的两个学生，并输出。
        list.stream().sorted((o1, o2) -> Double.compare(o2.getHeight(), o1.getHeight())).skip(list.size()-2).forEach(System.out::println);
        System.out.println("-------------");
        //5.找出身高超过180的学生名字，去除重复的名字。
        list.stream().filter(s -> s.getHeight()>180).map(Stu::getName).distinct().forEach(System.out::println);
        System.out.println("-------------");
        //6.去掉数据中重复的张三数据（在stu类中重写equils方法后调用distinct）。
        list.stream().distinct().forEach(System.out::println);
        //7.合并两个stream流
        Stream<Integer> integerStream = Stream.of(1, 2, 3);
        Stream<Integer> integerStream1 = Stream.of(4, 5, 6);
        Stream.concat(integerStream, integerStream1).forEach(System.out::println);
    }
}
